import xtxMessage from '@/components/library/Message'
import router from '@/router'
import { useIntervalFn } from '@vueuse/shared'
import store from '@/store'
// import { ref } from 'vue'
import veeValidateSchema from './vee-validate-schema'

// 发送验证码
export const sendCode = async (sendCodeApi, mobile, formCom, number) => {
  // useIntervalFn vueuse开启定时器功能
  // resume()   开启定时器
  // pause（）  停止定时器
  const { resume, pause } = useIntervalFn(() => {
  //   console.log(2222)
    number.value--
    if (number.value <= 0) {
      pause()
    }
  //   默认马上执行，{ immediate: false } 取消默认执行
  }, 1000, { immediate: false })
  // 验证手机号码是否符号校验
  const mobileChecked = veeValidateSchema.mobile(mobile)
  // mobileChecked 输出值有三个，只有当输出值为true时才符号，其他提示报错
  if (mobileChecked === true) {
    // 当number不为0 的时候不能点击
    if (number.value !== 0) return
    // 点击时赋值为60开始倒数
    number.value = 60
    // 开启定时器
    resume()
    try {
      // 发送获取验证码请求
      const { msg } = await sendCodeApi(mobile)
      // 请求成功提示
      xtxMessage({ type: 'success', message: msg })
      // promise 报错用trycatch 捕获
    } catch (error) {
      // console.log(error)
      // 报错信息提示
      xtxMessage({ type: 'error', message: error.response.data.message })
    }
  } else {
    // setFieldError 对单个输入框进行校验报错提示
    // console.log(111)s
    formCom.value.setFieldError('mobile', mobileChecked)
  }
  return { formCom, number }
}

// const route = useRoute()
// console.log(router.currentRoute.value.query.redirectUrl, 222)
// console.log(route.query.redirectUrl, 111)
// 登录按钮点击事件
export const login = async (loginBtnApi, form, formCom) => {
  // 实例化仓库
//   const store = useStore()
//   const router = useRouter()
  // 主动对表单的值进行校验
  const valid = await formCom.value.validate()
  //   console.log(valid)
  //   如果返回值为false，说明验证失败
  if (!valid) return xtxMessage({ type: 'error', message: '表单校验失败' })
  //   表单验证成功
  //   因为登录接口是promise对象，报错需要用trycatch来捕获
  try {
    //   发送登录请求
    const { result } = await loginBtnApi(form)
    // console.log(result, 111)
    // 1.0 存储请求回来的数据
    store.commit('user/setUser', result)
    // 登录成功合并购物车
    store.dispatch('cart/mergeLocalCart')
    // 2.0 跳转页面（2.1 有跳转前的页面  2.2 跳转到首页 ）
    // const redirectUrl = route.query.redirectUrl
    const redirectUrl = router.currentRoute.value.query.redirectUrl
    router.push(redirectUrl || '/')
    xtxMessage({ type: 'success', message: '登录成功' })
    // 登录接口不成功
  } catch (error) {
    // console.dir(error)
    // 报错信息弹框
    // alert(error.response.data.message)
    xtxMessage({ type: 'error', message: error.response.data.message || '登录出错啦' })
  }
  return { formCom }
}
